home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 1.iso / toolbox / src / demos / OpenGL / ideas / draw_holder.c < prev    next >
C/C++ Source or Header  |  1996-11-11  |  48KB  |  1,361 lines

  1. /*
  2.  * (c) Copyright 1993, Silicon Graphics, Inc.
  3.  * ALL RIGHTS RESERVED 
  4.  * Permission to use, copy, modify, and distribute this software for 
  5.  * any purpose and without fee is hereby granted, provided that the above
  6.  * copyright notice appear in all copies and that both the copyright notice
  7.  * and this permission notice appear in supporting documentation, and that 
  8.  * the name of Silicon Graphics, Inc. not be used in advertising
  9.  * or publicity pertaining to distribution of the software without specific,
  10.  * written prior permission. 
  11.  *
  12.  * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
  13.  * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
  14.  * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
  15.  * FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL SILICON
  16.  * GRAPHICS, INC.  BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
  17.  * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
  18.  * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
  19.  * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
  20.  * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC.  HAS BEEN
  21.  * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
  22.  * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
  23.  * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
  24.  * 
  25.  * US Government Users Restricted Rights 
  26.  * Use, duplication, or disclosure by the Government is subject to
  27.  * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
  28.  * (c)(1)(ii) of the Rights in Technical Data and Computer Software
  29.  * clause at DFARS 252.227-7013 and/or in similar or successor
  30.  * clauses in the FAR or the DOD or NASA FAR Supplement.
  31.  * Unpublished-- rights reserved under the copyright laws of the
  32.  * United States.  Contractor/manufacturer is Silicon Graphics,
  33.  * Inc., 2011 N.  Shoreline Blvd., Mountain View, CA 94039-7311.
  34.  *
  35.  * OpenGL(TM) is a trademark of Silicon Graphics, Inc.
  36.  */
  37. #include <GL/gl.h>
  38.  
  39. #include "objects.h"
  40.  
  41. float bn[5][3] = {
  42.     {-1.0, 0.0, 0.0},
  43.     {0.0, 1.0, 0.0},
  44.     {1.0, 0.0, 0.0},
  45.     {0.0, -1.0, 0.0},
  46.     {0.0, 0.0, 1.0},
  47. };
  48.  
  49. float bp[4][8][3] = {
  50.     {   
  51.     {-14.000000, -14.000000, 0.000000},
  52.     {-14.000000, -14.000000, 4.000000},
  53.     {-14.000000, 14.000000, 0.000000},
  54.     {-14.000000, 14.000000, 4.000000},
  55.     {14.000000, 14.000000, 0.000000},
  56.     {14.000000, 14.000000, 4.000000},
  57.     {14.000000, -14.000000, 0.000000},
  58.     {14.000000, -14.000000, 4.000000},
  59.     },
  60.     {
  61.     {-12.000000, -12.000000, 4.000000},
  62.     {-12.000000, -12.000000, 8.000000},
  63.     {-12.000000, 12.000000, 4.000000},
  64.     {-12.000000, 12.000000, 8.000000},
  65.     {12.000000, 12.000000, 4.000000},
  66.     {12.000000, 12.000000, 8.000000},
  67.     {12.000000, -12.000000, 4.000000},
  68.     {12.000000, -12.000000, 8.000000},
  69.     },
  70.     {
  71.     {-10.000000, -10.000000, 8.000000},
  72.     {-10.000000, -10.000000, 12.000000},
  73.     {-10.000000, 10.000000, 8.000000},
  74.     {-10.000000, 10.000000, 12.000000},
  75.     {10.000000, 10.000000, 8.000000},
  76.     {10.000000, 10.000000, 12.000000},
  77.     {10.000000, -10.000000, 8.000000},
  78.     {10.000000, -10.000000, 12.000000},
  79.     },
  80.     {
  81.     {-8.000000, -8.000000, 12.000000},
  82.     {-8.000000, -8.000000, 8.000000},
  83.     {-8.000000, 8.000000, 12.000000},
  84.     {-8.000000, 8.000000, 8.000000},
  85.     {8.000000, 8.000000, 12.000000},
  86.     {8.000000, 8.000000, 8.000000},
  87.     {8.000000, -8.000000, 12.000000},
  88.     {8.000000, -8.000000, 8.000000},
  89.     },
  90. };
  91.  
  92. float tp[12][21][3] = {
  93.      {
  94.     {10.000000, 0.000000, 1.000000},
  95.     {9.510565, -3.090170, 1.000000},
  96.     {8.090170, -5.877852, 1.000000},
  97.     {5.877852, -8.090170, 1.000000},
  98.     {3.090170, -9.510565, 1.000000},
  99.     {0.000000, -10.000000, 1.000000},
  100.     {-3.090170, -9.510565, 1.000000},
  101.     {-5.877852, -8.090170, 1.000000},
  102.     {-8.090170, -5.877852, 1.000000},
  103.     {-9.510565, -3.090170, 1.000000},
  104.     {-10.000000, 0.000000, 1.000000},
  105.     {-9.510565, 3.090170, 1.000000},
  106.     {-8.090170, 5.877852, 1.000000},
  107.     {-5.877852, 8.090170, 1.000000},
  108.     {-3.090170, 9.510565, 1.000000},
  109.     {0.000000, 10.000000, 1.000000},
  110.     {3.090170, 9.510565, 1.000000},
  111.     {5.877852, 8.090170, 1.000000},
  112.     {8.090170, 5.877852, 1.000000},
  113.     {9.510565, 3.090170, 1.000000},
  114.     {10.000000, 0.000000, 1.000000},
  115.     },
  116.  
  117.      {
  118.     {10.540641, 0.000000, 0.841254},
  119.     {10.024745, -3.257237, 0.841254},
  120.     {8.527557, -6.195633, 0.841254},
  121.     {6.195633, -8.527557, 0.841254},
  122.     {3.257237, -10.024745, 0.841254},
  123.     {0.000000, -10.540641, 0.841254},
  124.     {-3.257237, -10.024745, 0.841254},
  125.     {-6.195633, -8.527557, 0.841254},
  126.     {-8.527557, -6.195633, 0.841254},
  127.     {-10.024745, -3.257237, 0.841254},
  128.     {-10.540641, 0.000000, 0.841254},
  129.     {-10.024745, 3.257237, 0.841254},
  130.     {-8.527557, 6.195633, 0.841254},
  131.     {-6.195633, 8.527557, 0.841254},
  132.     {-3.257237, 10.024745, 0.841254},
  133.     {0.000000, 10.540641, 0.841254},
  134.     {3.257237, 10.024745, 0.841254},
  135.     {6.195633, 8.527557, 0.841254},
  136.     {8.527557, 6.195633, 0.841254},
  137.     {10.024745, 3.257237, 0.841254},
  138.     {10.540641, 0.000000, 0.841254},
  139.     },
  140.  
  141.      {
  142.     {10.909632, 0.000000, 0.415415},
  143.     {10.375676, -3.371262, 0.415415},
  144.     {8.826077, -6.412521, 0.415415},
  145.     {6.412521, -8.826077, 0.415415},
  146.     {3.371262, -10.375676, 0.415415},
  147.     {0.000000, -10.909632, 0.415415},
  148.     {-3.371262, -10.375676, 0.415415},
  149.     {-6.412521, -8.826077, 0.415415},
  150.     {-8.826077, -6.412521, 0.415415},
  151.     {-10.375676, -3.371262, 0.415415},
  152.     {-10.909632, 0.000000, 0.415415},
  153.     {-10.375676, 3.371262, 0.415415},
  154.     {-8.826077, 6.412521, 0.415415},
  155.     {-6.412521, 8.826077, 0.415415},
  156.     {-3.371262, 10.375676, 0.415415},
  157.     {0.000000, 10.909632, 0.415415},
  158.     {3.371262, 10.375676, 0.415415},
  159.     {6.412521, 8.826077, 0.415415},
  160.     {8.826077, 6.412521, 0.415415},
  161.     {10.375676, 3.371262, 0.415415},
  162.     {10.909632, 0.000000, 0.415415},
  163.     },
  164.  
  165.      {
  166.     {10.989821, 0.000000, -0.142315},
  167.     {10.451941, -3.396042, -0.142315},
  168.     {8.890952, -6.459655, -0.142315},
  169.     {6.459655, -8.890952, -0.142315},
  170.     {3.396042, -10.451941, -0.142315},
  171.     {0.000000, -10.989821, -0.142315},
  172.     {-3.396042, -10.451941, -0.142315},
  173.     {-6.459655, -8.890952, -0.142315},
  174.     {-8.890952, -6.459655, -0.142315},
  175.     {-10.451941, -3.396042, -0.142315},
  176.     {-10.989821, 0.000000, -0.142315},
  177.     {-10.451941, 3.396042, -0.142315},
  178.     {-8.890952, 6.459655, -0.142315},
  179.     {-6.459655, 8.890952, -0.142315},
  180.     {-3.396042, 10.451941, -0.142315},
  181.     {0.000000, 10.989821, -0.142315},
  182.     {3.396042, 10.451941, -0.142315},
  183.     {6.459655, 8.890952, -0.142315},
  184.     {8.890952, 6.459655, -0.142315},
  185.     {10.451941, 3.396042, -0.142315},
  186.     {10.989821, 0.000000, -0.142315},
  187.     },
  188.  
  189.      {
  190.     {10.755750, 0.000000, -0.654861},
  191.     {10.229325, -3.323709, -0.654861},
  192.     {8.701584, -6.322071, -0.654861},
  193.     {6.322071, -8.701584, -0.654861},
  194.     {3.323709, -10.229325, -0.654861},
  195.     {0.000000, -10.755750, -0.654861},
  196.     {-3.323709, -10.229325, -0.654861},
  197.     {-6.322071, -8.701584, -0.654861},
  198.     {-8.701584, -6.322071, -0.654861},
  199.     {-10.229325, -3.323709, -0.654861},
  200.     {-10.755750, 0.000000, -0.654861},
  201.     {-10.229325, 3.323709, -0.654861},
  202.     {-8.701584, 6.322071, -0.654861},
  203.     {-6.322071, 8.701584, -0.654861},
  204.     {-3.323709, 10.229325, -0.654861},
  205.     {0.000000, 10.755750, -0.654861},
  206.     {3.323709, 10.229325, -0.654861},
  207.     {6.322071, 8.701584, -0.654861},
  208.     {8.701584, 6.322071, -0.654861},
  209.     {10.229325, 3.323709, -0.654861},
  210.     {10.755750, 0.000000, -0.654861},
  211.     },
  212.  
  213.      {
  214.     {10.281733, 0.000000, -0.959493},
  215.     {9.778509, -3.177230, -0.959493},
  216.     {8.318096, -6.043451, -0.959493},
  217.     {6.043451, -8.318096, -0.959493},
  218.     {3.177230, -9.778509, -0.959493},
  219.     {0.000000, -10.281733, -0.959493},
  220.     {-3.177230, -9.778509, -0.959493},
  221.     {-6.043451, -8.318096, -0.959493},
  222.     {-8.318096, -6.043451, -0.959493},
  223.     {-9.778509, -3.177230, -0.959493},
  224.     {-10.281733, 0.000000, -0.959493},
  225.     {-9.778509, 3.177230, -0.959493},
  226.     {-8.318096, 6.043451, -0.959493},
  227.     {-6.043451, 8.318096, -0.959493},
  228.     {-3.177230, 9.778509, -0.959493},
  229.     {0.000000, 10.281733, -0.959493},
  230.     {3.177230, 9.778509, -0.959493},
  231.     {6.043451, 8.318096, -0.959493},
  232.     {8.318096, 6.043451, -0.959493},
  233.     {9.778509, 3.177230, -0.959493},
  234.     {10.281733, 0.000000, -0.959493},
  235.     },
  236.  
  237.      {
  238.     {9.718267, 0.000000, -0.959493},
  239.     {9.242621, -3.003110, -0.959493},
  240.     {7.862244, -5.712255, -0.959493},
  241.     {5.712255, -7.862244, -0.959493},
  242.     {3.003110, -9.242621, -0.959493},
  243.     {0.000000, -9.718267, -0.959493},
  244.     {-3.003110, -9.242621, -0.959493},
  245.     {-5.712255, -7.862244, -0.959493},
  246.     {-7.862244, -5.712255, -0.959493},
  247.     {-9.242621, -3.003110, -0.959493},
  248.     {-9.718267, 0.000000, -0.959493},
  249.     {-9.242621, 3.003110, -0.959493},
  250.     {-7.862244, 5.712255, -0.959493},
  251.     {-5.712255, 7.862244, -0.959493},
  252.     {-3.003110, 9.242621, -0.959493},
  253.     {0.000000, 9.718267, -0.959493},
  254.     {3.003110, 9.242621, -0.959493},
  255.     {5.712255, 7.862244, -0.959493},
  256.     {7.862244, 5.712255, -0.959493},
  257.     {9.242621, 3.003110, -0.959493},
  258.     {9.718267, 0.000000, -0.959493},
  259.     },
  260.  
  261.      {
  262.     {9.244250, 0.000000, -0.654861},
  263.     {8.791805, -2.856631, -0.654861},
  264.     {7.478756, -5.433634, -0.654861},
  265.     {5.433634, -7.478756, -0.654861},
  266.     {2.856631, -8.791805, -0.654861},
  267.     {0.000000, -9.244250, -0.654861},
  268.     {-2.856631, -8.791805, -0.654861},
  269.     {-5.433634, -7.478756, -0.654861},
  270.     {-7.478756, -5.433634, -0.654861},
  271.     {-8.791805, -2.856631, -0.654861},
  272.     {-9.244250, 0.000000, -0.654861},
  273.     {-8.791805, 2.856631, -0.654861},
  274.     {-7.478756, 5.433634, -0.654861},
  275.     {-5.433634, 7.478756, -0.654861},
  276.     {-2.856631, 8.791805, -0.654861},
  277.     {0.000000, 9.244250, -0.654861},
  278.     {2.856631, 8.791805, -0.654861},
  279.     {5.433634, 7.478756, -0.654861},
  280.     {7.478756, 5.433634, -0.654861},
  281.     {8.791805, 2.856631, -0.654861},
  282.     {9.244250, 0.000000, -0.654861},
  283.     },
  284.  
  285.      {
  286.     {9.010179, 0.000000, -0.142315},
  287.     {8.569189, -2.784298, -0.142315},
  288.     {7.289388, -5.296050, -0.142315},
  289.     {5.296050, -7.289388, -0.142315},
  290.     {2.784298, -8.569189, -0.142315},
  291.     {0.000000, -9.010179, -0.142315},
  292.     {-2.784298, -8.569189, -0.142315},
  293.     {-5.296050, -7.289388, -0.142315},
  294.     {-7.289388, -5.296050, -0.142315},
  295.     {-8.569189, -2.784298, -0.142315},
  296.     {-9.010179, 0.000000, -0.142315},
  297.     {-8.569189, 2.784298, -0.142315},
  298.     {-7.289388, 5.296050, -0.142315},
  299.     {-5.296050, 7.289388, -0.142315},
  300.     {-2.784298, 8.569189, -0.142315},
  301.     {0.000000, 9.010179, -0.142315},
  302.     {2.784298, 8.569189, -0.142315},
  303.     {5.296050, 7.289388, -0.142315},
  304.     {7.289388, 5.296050, -0.142315},
  305.     {8.569189, 2.784298, -0.142315},
  306.     {9.010179, 0.000000, -0.142315},
  307.     },
  308.  
  309.      {
  310.     {9.090367, 0.000000, 0.415414},
  311.     {8.645453, -2.809078, 0.415414},
  312.     {7.354262, -5.343184, 0.415414},
  313.     {5.343184, -7.354262, 0.415414},
  314.     {2.809078, -8.645453, 0.415414},
  315.     {0.000000, -9.090367, 0.415414},
  316.     {-2.809078, -8.645453, 0.415414},
  317.     {-5.343184, -7.354262, 0.415414},
  318.     {-7.354262, -5.343184, 0.415414},
  319.     {-8.645453, -2.809078, 0.415414},
  320.     {-9.090367, 0.000000, 0.415414},
  321.     {-8.645453, 2.809078, 0.415414},
  322.     {-7.354262, 5.343184, 0.415414},
  323.     {-5.343184, 7.354262, 0.415414},
  324.     {-2.809078, 8.645453, 0.415414},
  325.     {0.000000, 9.090367, 0.415414},
  326.     {2.809078, 8.645453, 0.415414},
  327.     {5.343184, 7.354262, 0.415414},
  328.     {7.354262, 5.343184, 0.415414},
  329.     {8.645453, 2.809078, 0.415414},
  330.     {9.090367, 0.000000, 0.415414},
  331.     },
  332.  
  333.      {
  334.     {9.459358, 0.000000, 0.841253},
  335.     {8.996385, -2.923103, 0.841253},
  336.     {7.652781, -5.560071, 0.841253},
  337.     {5.560071, -7.652781, 0.841253},
  338.     {2.923103, -8.996385, 0.841253},
  339.     {0.000000, -9.459358, 0.841253},
  340.     {-2.923103, -8.996385, 0.841253},
  341.     {-5.560071, -7.652781, 0.841253},
  342.     {-7.652781, -5.560071, 0.841253},
  343.     {-8.996385, -2.923103, 0.841253},
  344.     {-9.459358, 0.000000, 0.841253},
  345.     {-8.996385, 2.923103, 0.841253},
  346.     {-7.652781, 5.560071, 0.841253},
  347.     {-5.560071, 7.652781, 0.841253},
  348.     {-2.923103, 8.996385, 0.841253},
  349.     {0.000000, 9.459358, 0.841253},
  350.     {2.923103, 8.996385, 0.841253},
  351.     {5.560071, 7.652781, 0.841253},
  352.     {7.652781, 5.560071, 0.841253},
  353.     {8.996385, 2.923103, 0.841253},
  354.     {9.459358, 0.000000, 0.841253},
  355.     },
  356.  
  357.      {
  358.     {9.999999, 0.000000, 1.000000},
  359.     {9.510564, -3.090170, 1.000000},
  360.     {8.090169, -5.877852, 1.000000},
  361.     {5.877852, -8.090169, 1.000000},
  362.     {3.090170, -9.510564, 1.000000},
  363.     {0.000000, -9.999999, 1.000000},
  364.     {-3.090170, -9.510564, 1.000000},
  365.     {-5.877852, -8.090169, 1.000000},
  366.     {-8.090169, -5.877852, 1.000000},
  367.     {-9.510564, -3.090170, 1.000000},
  368.     {-9.999999, 0.000000, 1.000000},
  369.     {-9.510564, 3.090170, 1.000000},
  370.     {-8.090169, 5.877852, 1.000000},
  371.     {-5.877852, 8.090169, 1.000000},
  372.     {-3.090170, 9.510564, 1.000000},
  373.     {0.000000, 9.999999, 1.000000},
  374.     {3.090170, 9.510564, 1.000000},
  375.     {5.877852, 8.090169, 1.000000},
  376.     {8.090169, 5.877852, 1.000000},
  377.     {9.510564, 3.090170, 1.000000},
  378.     {9.999999, 0.000000, 1.000000},
  379.     },
  380.  
  381. };
  382.  
  383. float tn[12][21][3] = {
  384.     {
  385.     {0.000000, 0.000000, 1.000000},
  386.     {0.000000, 0.000000, 1.000000},
  387.     {0.000000, 0.000000, 1.000000},
  388.     {0.000000, 0.000000, 1.000000},
  389.     {0.000000, 0.000000, 1.000000},
  390.     {0.000000, 0.000000, 1.000000},
  391.     {0.000000, 0.000000, 1.000000},
  392.     {0.000000, 0.000000, 1.000000},
  393.     {0.000000, 0.000000, 1.000000},
  394.     {0.000000, 0.000000, 1.000000},
  395.     {0.000000, 0.000000, 1.000000},
  396.     {0.000000, 0.000000, 1.000000},
  397.     {0.000000, 0.000000, 1.000000},
  398.     {0.000000, 0.000000, 1.000000},
  399.     {0.000000, 0.000000, 1.000000},
  400.     {0.000000, 0.000000, 1.000000},
  401.     {0.000000, 0.000000, 1.000000},
  402.     {0.000000, 0.000000, 1.000000},
  403.     {0.000000, 0.000000, 1.000000},
  404.     {0.000000, 0.000000, 1.000000},
  405.     {0.000000, 0.000000, 1.000000},
  406.     },
  407.  
  408.     {
  409.     {0.540641, 0.000000, 0.841254},
  410.     {0.514180, -0.167067, 0.841254},
  411.     {0.437388, -0.317781, 0.841254},
  412.     {0.317781, -0.437388, 0.841254},
  413.     {0.167067, -0.514180, 0.841254},
  414.     {0.000000, -0.540641, 0.841254},
  415.     {-0.167067, -0.514180, 0.841254},
  416.     {-0.317781, -0.437388, 0.841254},
  417.     {-0.437388, -0.317781, 0.841254},
  418.     {-0.514180, -0.167067, 0.841254},
  419.     {-0.540641, 0.000000, 0.841254},
  420.     {-0.514180, 0.167067, 0.841254},
  421.     {-0.437388, 0.317781, 0.841254},
  422.     {-0.317781, 0.437388, 0.841254},
  423.     {-0.167067, 0.514180, 0.841254},
  424.     {0.000000, 0.540641, 0.841254},
  425.     {0.167067, 0.514180, 0.841254},
  426.     {0.317781, 0.437388, 0.841254},
  427.     {0.437388, 0.317781, 0.841254},
  428.     {0.514180, 0.167067, 0.841254},
  429.     {0.540641, 0.000000, 0.841254},
  430.     },
  431.  
  432.     {
  433.     {0.909632, 0.000000, 0.415415},
  434.     {0.865111, -0.281092, 0.415415},
  435.     {0.735908, -0.534668, 0.415415},
  436.     {0.534668, -0.735908, 0.415415},
  437.     {0.281092, -0.865111, 0.415415},
  438.     {0.000000, -0.909632, 0.415415},
  439.     {-0.281092, -0.865111, 0.415415},
  440.     {-0.534668, -0.735908, 0.415415},
  441.     {-0.735908, -0.534668, 0.415415},
  442.     {-0.865111, -0.281092, 0.415415},
  443.     {-0.909632, 0.000000, 0.415415},
  444.     {-0.865111, 0.281092, 0.415415},
  445.     {-0.735908, 0.534668, 0.415415},
  446.     {-0.534668, 0.735908, 0.415415},
  447.     {-0.281092, 0.865111, 0.415415},
  448.     {0.000000, 0.909632, 0.415415},
  449.     {0.281092, 0.865111, 0.415415},
  450.     {0.534668, 0.735908, 0.415415},
  451.     {0.735908, 0.534668, 0.415415},
  452.     {0.865111, 0.281092, 0.415415},
  453.     {0.909632, 0.000000, 0.415415},
  454.     },
  455.  
  456.     {
  457.     {0.989821, 0.000000, -0.142315},
  458.     {0.941376, -0.305872, -0.142315},
  459.     {0.800782, -0.581802, -0.142315},
  460.     {0.581802, -0.800782, -0.142315},
  461.     {0.305872, -0.941376, -0.142315},
  462.     {0.000000, -0.989821, -0.142315},
  463.     {-0.305872, -0.941376, -0.142315},
  464.     {-0.581802, -0.800782, -0.142315},
  465.     {-0.800782, -0.581802, -0.142315},
  466.     {-0.941376, -0.305872, -0.142315},
  467.     {-0.989821, 0.000000, -0.142315},
  468.     {-0.941376, 0.305872, -0.142315},
  469.     {-0.800782, 0.581802, -0.142315},
  470.     {-0.581802, 0.800782, -0.142315},
  471.     {-0.305872, 0.941376, -0.142315},
  472.     {0.000000, 0.989821, -0.142315},
  473.     {0.305872, 0.941376, -0.142315},
  474.     {0.581802, 0.800782, -0.142315},
  475.     {0.800782, 0.581802, -0.142315},
  476.     {0.941376, 0.305872, -0.142315},
  477.     {0.989821, 0.000000, -0.142315},
  478.     },
  479.  
  480.     {
  481.     {0.755750, 0.000000, -0.654861},
  482.     {0.718761, -0.233539, -0.654861},
  483.     {0.611414, -0.444218, -0.654861},
  484.     {0.444218, -0.611414, -0.654861},
  485.     {0.233539, -0.718761, -0.654861},
  486.     {0.000000, -0.755750, -0.654861},
  487.     {-0.233539, -0.718761, -0.654861},
  488.     {-0.444218, -0.611414, -0.654861},
  489.     {-0.611414, -0.444218, -0.654861},
  490.     {-0.718761, -0.233539, -0.654861},
  491.     {-0.755750, 0.000000, -0.654861},
  492.     {-0.718761, 0.233539, -0.654861},
  493.     {-0.611414, 0.444218, -0.654861},
  494.     {-0.444218, 0.611414, -0.654861},
  495.     {-0.233539, 0.718761, -0.654861},
  496.     {0.000000, 0.755750, -0.654861},
  497.     {0.233539, 0.718761, -0.654861},
  498.     {0.444218, 0.611414, -0.654861},
  499.     {0.611414, 0.444218, -0.654861},
  500.     {0.718761, 0.233539, -0.654861},
  501.     {0.755750, 0.000000, -0.654861},
  502.     },
  503.  
  504.     {
  505.     {0.281733, 0.000000, -0.959493},
  506.     {0.267944, -0.087060, -0.959493},
  507.     {0.227927, -0.165598, -0.959493},
  508.     {0.165598, -0.227927, -0.959493},
  509.     {0.087060, -0.267944, -0.959493},
  510.     {0.000000, -0.281733, -0.959493},
  511.     {-0.087060, -0.267944, -0.959493},
  512.     {-0.165598, -0.227927, -0.959493},
  513.     {-0.227927, -0.165598, -0.959493},
  514.     {-0.267944, -0.087060, -0.959493},
  515.     {-0.281733, 0.000000, -0.959493},
  516.     {-0.267944, 0.087060, -0.959493},
  517.     {-0.227927, 0.165598, -0.959493},
  518.     {-0.165598, 0.227927, -0.959493},
  519.     {-0.087060, 0.267944, -0.959493},
  520.     {0.000000, 0.281733, -0.959493},
  521.     {0.087060, 0.267944, -0.959493},
  522.     {0.165598, 0.227927, -0.959493},
  523.     {0.227927, 0.165598, -0.959493},
  524.     {0.267944, 0.087060, -0.959493},
  525.     {0.281733, 0.000000, -0.959493},
  526.     },
  527.  
  528.     {
  529.     {-0.281732, 0.000000, -0.959493},
  530.     {-0.267943, 0.087060, -0.959493},
  531.     {-0.227926, 0.165598, -0.959493},
  532.     {-0.165598, 0.227926, -0.959493},
  533.     {-0.087060, 0.267943, -0.959493},
  534.     {0.000000, 0.281732, -0.959493},
  535.     {0.087060, 0.267943, -0.959493},
  536.     {0.165598, 0.227926, -0.959493},
  537.     {0.227926, 0.165598, -0.959493},
  538.     {0.267943, 0.087060, -0.959493},
  539.     {0.281732, 0.000000, -0.959493},
  540.     {0.267943, -0.087060, -0.959493},
  541.     {0.227926, -0.165598, -0.959493},
  542.     {0.165598, -0.227926, -0.959493},
  543.     {0.087060, -0.267943, -0.959493},
  544.     {0.000000, -0.281732, -0.959493},
  545.     {-0.087060, -0.267943, -0.959493},
  546.     {-0.165598, -0.227926, -0.959493},
  547.     {-0.227926, -0.165598, -0.959493},
  548.     {-0.267943, -0.087060, -0.959493},
  549.     {-0.281732, 0.000000, -0.959493},
  550.     },
  551.  
  552.     {
  553.     {-0.755749, 0.000000, -0.654861},
  554.     {-0.718760, 0.233539, -0.654861},
  555.     {-0.611414, 0.444218, -0.654861},
  556.     {-0.444218, 0.611414, -0.654861},
  557.     {-0.233539, 0.718760, -0.654861},
  558.     {0.000000, 0.755749, -0.654861},
  559.     {0.233539, 0.718760, -0.654861},
  560.     {0.444218, 0.611414, -0.654861},
  561.     {0.611414, 0.444218, -0.654861},
  562.     {0.718760, 0.233539, -0.654861},
  563.     {0.755749, 0.000000, -0.654861},
  564.     {0.718760, -0.233539, -0.654861},
  565.     {0.611414, -0.444218, -0.654861},
  566.     {0.444218, -0.611414, -0.654861},
  567.     {0.233539, -0.718760, -0.654861},
  568.     {0.000000, -0.755749, -0.654861},
  569.     {-0.233539, -0.718760, -0.654861},
  570.     {-0.444218, -0.611414, -0.654861},
  571.     {-0.611414, -0.444218, -0.654861},
  572.     {-0.718760, -0.233539, -0.654861},
  573.     {-0.755749, 0.000000, -0.654861},
  574.     },
  575.  
  576.     {
  577.     {-0.989821, 0.000000, -0.142315},
  578.     {-0.941376, 0.305872, -0.142315},
  579.     {-0.800782, 0.581802, -0.142315},
  580.     {-0.581802, 0.800782, -0.142315},
  581.     {-0.305872, 0.941376, -0.142315},
  582.     {0.000000, 0.989821, -0.142315},
  583.     {0.305872, 0.941376, -0.142315},
  584.     {0.581802, 0.800782, -0.142315},
  585.     {0.800782, 0.581802, -0.142315},
  586.     {0.941376, 0.305872, -0.142315},
  587.     {0.989821, 0.000000, -0.142315},
  588.     {0.941376, -0.305872, -0.142315},
  589.     {0.800782, -0.581802, -0.142315},
  590.     {0.581802, -0.800782, -0.142315},
  591.     {0.305872, -0.941376, -0.142315},
  592.     {0.000000, -0.989821, -0.142315},
  593.     {-0.305872, -0.941376, -0.142315},
  594.     {-0.581802, -0.800782, -0.142315},
  595.     {-0.800782, -0.581802, -0.142315},
  596.     {-0.941376, -0.305872, -0.142315},
  597.     {-0.989821, 0.000000, -0.142315},
  598.     },
  599.  
  600.     {
  601.     {-0.909632, 0.000000, 0.415414},
  602.     {-0.865112, 0.281092, 0.415414},
  603.     {-0.735908, 0.534668, 0.415414},
  604.     {-0.534668, 0.735908, 0.415414},
  605.     {-0.281092, 0.865112, 0.415414},
  606.     {0.000000, 0.909632, 0.415414},
  607.     {0.281092, 0.865112, 0.415414},
  608.     {0.534668, 0.735908, 0.415414},
  609.     {0.735908, 0.534668, 0.415414},
  610.     {0.865112, 0.281092, 0.415414},
  611.     {0.909632, 0.000000, 0.415414},
  612.     {0.865112, -0.281092, 0.415414},
  613.     {0.735908, -0.534668, 0.415414},
  614.     {0.534668, -0.735908, 0.415414},
  615.     {0.281092, -0.865112, 0.415414},
  616.     {0.000000, -0.909632, 0.415414},
  617.     {-0.281092, -0.865112, 0.415414},
  618.     {-0.534668, -0.735908, 0.415414},
  619.     {-0.735908, -0.534668, 0.415414},
  620.     {-0.865112, -0.281092, 0.415414},
  621.     {-0.909632, 0.000000, 0.415414},
  622.     },
  623.  
  624.     {
  625.     {-0.540642, 0.000000, 0.841253},
  626.     {-0.514181, 0.167067, 0.841253},
  627.     {-0.437388, 0.317781, 0.841253},
  628.     {-0.317781, 0.437388, 0.841253},
  629.     {-0.167067, 0.514181, 0.841253},
  630.     {0.000000, 0.540642, 0.841253},
  631.     {0.167067, 0.514181, 0.841253},
  632.     {0.317781, 0.437388, 0.841253},
  633.     {0.437388, 0.317781, 0.841253},
  634.     {0.514181, 0.167067, 0.841253},
  635.     {0.540642, 0.000000, 0.841253},
  636.     {0.514181, -0.167067, 0.841253},
  637.     {0.437388, -0.317781, 0.841253},
  638.     {0.317781, -0.437388, 0.841253},
  639.     {0.167067, -0.514181, 0.841253},
  640.     {0.000000, -0.540642, 0.841253},
  641.     {-0.167067, -0.514181, 0.841253},
  642.     {-0.317781, -0.437388, 0.841253},
  643.     {-0.437388, -0.317781, 0.841253},
  644.     {-0.514181, -0.167067, 0.841253},
  645.     {-0.540642, 0.000000, 0.841253},
  646.     },
  647.  
  648.     {
  649.     {-0.000001, 0.000000, 1.000000},
  650.     {-0.000001, 0.000000, 1.000000},
  651.     {-0.000001, 0.000001, 1.000000},
  652.     {-0.000001, 0.000001, 1.000000},
  653.     {0.000000, 0.000001, 1.000000},
  654.     {0.000000, 0.000001, 1.000000},
  655.     {0.000000, 0.000001, 1.000000},
  656.     {0.000001, 0.000001, 1.000000},
  657.     {0.000001, 0.000001, 1.000000},
  658.     {0.000001, 0.000000, 1.000000},
  659.     {0.000001, 0.000000, 1.000000},
  660.     {0.000001, 0.000000, 1.000000},
  661.     {0.000001, -0.000001, 1.000000},
  662.     {0.000001, -0.000001, 1.000000},
  663.     {0.000000, -0.000001, 1.000000},
  664.     {0.000000, -0.000001, 1.000000},
  665.     {0.000000, -0.000001, 1.000000},
  666.     {-0.000001, -0.000001, 1.000000},
  667.     {-0.000001, -0.000001, 1.000000},
  668.     {-0.000001, 0.000000, 1.000000},
  669.     {-0.000001, 0.000000, 1.000000},
  670.     },
  671.  
  672. };
  673.  
  674. void draw_base(void) {
  675.   
  676.   glCallList( MAT_HOLDER_BASE); 
  677.   
  678.   glBegin(GL_POLYGON);
  679.   glNormal3fv(bn[0]);
  680.   glVertex3fv(bp[0][0]);
  681.   glVertex3fv(bp[0][1]);
  682.   glVertex3fv(bp[0][3]);
  683.   glVertex3fv(bp[0][2]);
  684.   glEnd();
  685.  
  686.   glBegin(GL_POLYGON);
  687.   glNormal3fv(bn[1]);
  688.   glVertex3fv(bp[0][2]);
  689.   glVertex3fv(bp[0][3]);
  690.   glVertex3fv(bp[0][5]);
  691.   glVertex3fv(bp[0][4]);
  692.   glEnd();
  693.  
  694.   glBegin(GL_POLYGON);
  695.   glNormal3fv(bn[2]);
  696.   glVertex3fv(bp[0][4]);
  697.   glVertex3fv(bp[0][5]);
  698.   glVertex3fv(bp[0][7]);
  699.   glVertex3fv(bp[0][6]);
  700.   glEnd();
  701.  
  702.   glBegin(GL_POLYGON);
  703.   glNormal3fv(bn[3]);
  704.   glVertex3fv(bp[0][6]);
  705.   glVertex3fv(bp[0][7]);
  706.   glVertex3fv(bp[0][1]);
  707.   glVertex3fv(bp[0][0]);
  708.   glEnd();
  709.   glBegin(GL_TRIANGLE_STRIP);
  710.   glNormal3fv(bn[4]);
  711.   glVertex3fv(bp[0][1]);
  712.   glVertex3fv(bp[1][0]);
  713.   glVertex3fv(bp[0][3]);
  714.   glVertex3fv(bp[1][2]);
  715.   glVertex3fv(bp[0][5]);
  716.   glVertex3fv(bp[1][4]);
  717.   glVertex3fv(bp[0][7]);
  718.   glVertex3fv(bp[1][6]);
  719.   glVertex3fv(bp[0][1]);
  720.   glVertex3fv(bp[1][0]);
  721.   glEnd();
  722.  
  723.   glBegin(GL_POLYGON);
  724.   glNormal3fv(bn[0]);
  725.   glVertex3fv(bp[1][0]);
  726.   glVertex3fv(bp[1][1]);
  727.   glVertex3fv(bp[1][3]);
  728.   glVertex3fv(bp[1][2]);
  729.   glEnd();
  730.  
  731.   glBegin(GL_POLYGON);
  732.   glNormal3fv(bn[1]);
  733.   glVertex3fv(bp[1][2]);
  734.   glVertex3fv(bp[1][3]);
  735.   glVertex3fv(bp[1][5]);
  736.   glVertex3fv(bp[1][4]);
  737.   glEnd();
  738.  
  739.   glBegin(GL_POLYGON);
  740.   glNormal3fv(bn[2]);
  741.   glVertex3fv(bp[1][4]);
  742.   glVertex3fv(bp[1][5]);
  743.   glVertex3fv(bp[1][7]);
  744.   glVertex3fv(bp[1][6]);
  745.   glEnd();
  746.  
  747.   glBegin(GL_POLYGON);
  748.   glNormal3fv(bn[3]);
  749.   glVertex3fv(bp[1][6]);
  750.   glVertex3fv(bp[1][7]);
  751.   glVertex3fv(bp[1][1]);
  752.   glVertex3fv(bp[1][0]);
  753.   glEnd();
  754.   glBegin(GL_TRIANGLE_STRIP);
  755.   glNormal3fv(bn[4]);
  756.   glVertex3fv(bp[1][1]);
  757.   glVertex3fv(bp[2][0]);
  758.   glVertex3fv(bp[1][3]);
  759.   glVertex3fv(bp[2][2]);
  760.   glVertex3fv(bp[1][5]);
  761.   glVertex3fv(bp[2][4]);
  762.   glVertex3fv(bp[1][7]);
  763.   glVertex3fv(bp[2][6]);
  764.   glVertex3fv(bp[1][1]);
  765.   glVertex3fv(bp[2][0]);
  766.   glEnd();
  767.  
  768.   glBegin(GL_POLYGON);
  769.   glNormal3fv(bn[0]);
  770.   glVertex3fv(bp[2][0]);
  771.   glVertex3fv(bp[2][1]);
  772.   glVertex3fv(bp[2][3]);
  773.   glVertex3fv(bp[2][2]);
  774.   glEnd();
  775.  
  776.   glBegin(GL_POLYGON);
  777.   glNormal3fv(bn[1]);
  778.   glVertex3fv(bp[2][2]);
  779.   glVertex3fv(bp[2][3]);
  780.   glVertex3fv(bp[2][5]);
  781.   glVertex3fv(bp[2][4]);
  782.   glEnd();
  783.  
  784.   glBegin(GL_POLYGON);
  785.   glNormal3fv(bn[2]);
  786.   glVertex3fv(bp[2][4]);
  787.   glVertex3fv(bp[2][5]);
  788.   glVertex3fv(bp[2][7]);
  789.   glVertex3fv(bp[2][6]);
  790.   glEnd();
  791.  
  792.   glBegin(GL_POLYGON);
  793.   glNormal3fv(bn[3]);
  794.   glVertex3fv(bp[2][6]);
  795.   glVertex3fv(bp[2][7]);
  796.   glVertex3fv(bp[2][1]);
  797.   glVertex3fv(bp[2][0]);
  798.   glEnd();
  799.   glBegin(GL_TRIANGLE_STRIP);
  800.   glNormal3fv(bn[4]);
  801.   glVertex3fv(bp[2][1]);
  802.   glVertex3fv(bp[3][0]);
  803.   glVertex3fv(bp[2][3]);
  804.   glVertex3fv(bp[3][2]);
  805.   glVertex3fv(bp[2][5]);
  806.   glVertex3fv(bp[3][4]);
  807.   glVertex3fv(bp[2][7]);
  808.   glVertex3fv(bp[3][6]);
  809.   glVertex3fv(bp[2][1]);
  810.   glVertex3fv(bp[3][0]);
  811.   glEnd();
  812.  
  813.   glBegin(GL_POLYGON);
  814.   glNormal3fv(bn[2]);
  815.   glVertex3fv(bp[3][0]);
  816.   glVertex3fv(bp[3][1]);
  817.   glVertex3fv(bp[3][3]);
  818.   glVertex3fv(bp[3][2]);
  819.   glEnd();
  820.  
  821.   glBegin(GL_POLYGON);
  822.   glNormal3fv(bn[3]);
  823.   glVertex3fv(bp[3][2]);
  824.   glVertex3fv(bp[3][3]);
  825.   glVertex3fv(bp[3][5]);
  826.   glVertex3fv(bp[3][4]);
  827.   glEnd();
  828.  
  829.   glBegin(GL_POLYGON);
  830.   glNormal3fv(bn[0]);
  831.   glVertex3fv(bp[3][4]);
  832.   glVertex3fv(bp[3][5]);
  833.   glVertex3fv(bp[3][7]);
  834.   glVertex3fv(bp[3][6]);
  835.   glEnd();
  836.  
  837.   glBegin(GL_POLYGON);
  838.   glNormal3fv(bn[1]);
  839.   glVertex3fv(bp[3][6]);
  840.   glVertex3fv(bp[3][7]);
  841.   glVertex3fv(bp[3][1]);
  842.   glVertex3fv(bp[3][0]);
  843.   glEnd();
  844.  
  845.   glBegin(GL_POLYGON);
  846.   glNormal3fv(bn[4]);
  847.   glVertex3fv(bp[3][1]);
  848.   glVertex3fv(bp[3][3]);
  849.   glVertex3fv(bp[3][5]);
  850.   glVertex3fv(bp[3][7]);
  851.   glEnd();
  852. }
  853.  
  854. void draw_torus(void) {
  855.   
  856.   if( MAT_HOLDER_RINGS) {glCallList( MAT_HOLDER_RINGS); }
  857.   
  858.   glBegin(GL_TRIANGLE_STRIP);
  859.   glNormal3fv(tn[0][0]); glVertex3fv(tp[0][0]);
  860.   glNormal3fv(tn[1][0]); glVertex3fv(tp[1][0]);
  861.   glNormal3fv(tn[0][1]); glVertex3fv(tp[0][1]);
  862.   glNormal3fv(tn[1][1]); glVertex3fv(tp[1][1]);
  863.   glNormal3fv(tn[0][2]); glVertex3fv(tp[0][2]);
  864.   glNormal3fv(tn[1][2]); glVertex3fv(tp[1][2]);
  865.   glNormal3fv(tn[0][3]); glVertex3fv(tp[0][3]);
  866.   glNormal3fv(tn[1][3]); glVertex3fv(tp[1][3]);
  867.   glNormal3fv(tn[0][4]); glVertex3fv(tp[0][4]);
  868.   glNormal3fv(tn[1][4]); glVertex3fv(tp[1][4]);
  869.   glNormal3fv(tn[0][5]); glVertex3fv(tp[0][5]);
  870.   glNormal3fv(tn[1][5]); glVertex3fv(tp[1][5]);
  871.   glNormal3fv(tn[0][6]); glVertex3fv(tp[0][6]);
  872.   glNormal3fv(tn[1][6]); glVertex3fv(tp[1][6]);
  873.   glNormal3fv(tn[0][7]); glVertex3fv(tp[0][7]);
  874.   glNormal3fv(tn[1][7]); glVertex3fv(tp[1][7]);
  875.   glNormal3fv(tn[0][8]); glVertex3fv(tp[0][8]);
  876.   glNormal3fv(tn[1][8]); glVertex3fv(tp[1][8]);
  877.   glNormal3fv(tn[0][9]); glVertex3fv(tp[0][9]);
  878.   glNormal3fv(tn[1][9]); glVertex3fv(tp[1][9]);
  879.   glNormal3fv(tn[0][10]); glVertex3fv(tp[0][10]);
  880.   glNormal3fv(tn[1][10]); glVertex3fv(tp[1][10]);
  881.   glNormal3fv(tn[0][11]); glVertex3fv(tp[0][11]);
  882.   glNormal3fv(tn[1][11]); glVertex3fv(tp[1][11]);
  883.   glNormal3fv(tn[0][12]); glVertex3fv(tp[0][12]);
  884.   glNormal3fv(tn[1][12]); glVertex3fv(tp[1][12]);
  885.   glNormal3fv(tn[0][13]); glVertex3fv(tp[0][13]);
  886.   glNormal3fv(tn[1][13]); glVertex3fv(tp[1][13]);
  887.   glNormal3fv(tn[0][14]); glVertex3fv(tp[0][14]);
  888.   glNormal3fv(tn[1][14]); glVertex3fv(tp[1][14]);
  889.   glNormal3fv(tn[0][15]); glVertex3fv(tp[0][15]);
  890.   glNormal3fv(tn[1][15]); glVertex3fv(tp[1][15]);
  891.   glNormal3fv(tn[0][16]); glVertex3fv(tp[0][16]);
  892.   glNormal3fv(tn[1][16]); glVertex3fv(tp[1][16]);
  893.   glNormal3fv(tn[0][17]); glVertex3fv(tp[0][17]);
  894.   glNormal3fv(tn[1][17]); glVertex3fv(tp[1][17]);
  895.   glNormal3fv(tn[0][18]); glVertex3fv(tp[0][18]);
  896.   glNormal3fv(tn[1][18]); glVertex3fv(tp[1][18]);
  897.   glNormal3fv(tn[0][19]); glVertex3fv(tp[0][19]);
  898.   glNormal3fv(tn[1][19]); glVertex3fv(tp[1][19]);
  899.   glNormal3fv(tn[0][20]); glVertex3fv(tp[0][20]);
  900.   glNormal3fv(tn[1][20]); glVertex3fv(tp[1][20]);
  901.   glEnd();
  902.   glBegin(GL_TRIANGLE_STRIP);
  903.   glNormal3fv(tn[1][0]); glVertex3fv(tp[1][0]);
  904.   glNormal3fv(tn[2][0]); glVertex3fv(tp[2][0]);
  905.   glNormal3fv(tn[1][1]); glVertex3fv(tp[1][1]);
  906.   glNormal3fv(tn[2][1]); glVertex3fv(tp[2][1]);
  907.   glNormal3fv(tn[1][2]); glVertex3fv(tp[1][2]);
  908.   glNormal3fv(tn[2][2]); glVertex3fv(tp[2][2]);
  909.   glNormal3fv(tn[1][3]); glVertex3fv(tp[1][3]);
  910.   glNormal3fv(tn[2][3]); glVertex3fv(tp[2][3]);
  911.   glNormal3fv(tn[1][4]); glVertex3fv(tp[1][4]);
  912.   glNormal3fv(tn[2][4]); glVertex3fv(tp[2][4]);
  913.   glNormal3fv(tn[1][5]); glVertex3fv(tp[1][5]);
  914.   glNormal3fv(tn[2][5]); glVertex3fv(tp[2][5]);
  915.   glNormal3fv(tn[1][6]); glVertex3fv(tp[1][6]);
  916.   glNormal3fv(tn[2][6]); glVertex3fv(tp[2][6]);
  917.   glNormal3fv(tn[1][7]); glVertex3fv(tp[1][7]);
  918.   glNormal3fv(tn[2][7]); glVertex3fv(tp[2][7]);
  919.   glNormal3fv(tn[1][8]); glVertex3fv(tp[1][8]);
  920.   glNormal3fv(tn[2][8]); glVertex3fv(tp[2][8]);
  921.   glNormal3fv(tn[1][9]); glVertex3fv(tp[1][9]);
  922.   glNormal3fv(tn[2][9]); glVertex3fv(tp[2][9]);
  923.   glNormal3fv(tn[1][10]); glVertex3fv(tp[1][10]);
  924.   glNormal3fv(tn[2][10]); glVertex3fv(tp[2][10]);
  925.   glNormal3fv(tn[1][11]); glVertex3fv(tp[1][11]);
  926.   glNormal3fv(tn[2][11]); glVertex3fv(tp[2][11]);
  927.   glNormal3fv(tn[1][12]); glVertex3fv(tp[1][12]);
  928.   glNormal3fv(tn[2][12]); glVertex3fv(tp[2][12]);
  929.   glNormal3fv(tn[1][13]); glVertex3fv(tp[1][13]);
  930.   glNormal3fv(tn[2][13]); glVertex3fv(tp[2][13]);
  931.   glNormal3fv(tn[1][14]); glVertex3fv(tp[1][14]);
  932.   glNormal3fv(tn[2][14]); glVertex3fv(tp[2][14]);
  933.   glNormal3fv(tn[1][15]); glVertex3fv(tp[1][15]);
  934.   glNormal3fv(tn[2][15]); glVertex3fv(tp[2][15]);
  935.   glNormal3fv(tn[1][16]); glVertex3fv(tp[1][16]);
  936.   glNormal3fv(tn[2][16]); glVertex3fv(tp[2][16]);
  937.   glNormal3fv(tn[1][17]); glVertex3fv(tp[1][17]);
  938.   glNormal3fv(tn[2][17]); glVertex3fv(tp[2][17]);
  939.   glNormal3fv(tn[1][18]); glVertex3fv(tp[1][18]);
  940.   glNormal3fv(tn[2][18]); glVertex3fv(tp[2][18]);
  941.   glNormal3fv(tn[1][19]); glVertex3fv(tp[1][19]);
  942.   glNormal3fv(tn[2][19]); glVertex3fv(tp[2][19]);
  943.   glNormal3fv(tn[1][20]); glVertex3fv(tp[1][20]);
  944.   glNormal3fv(tn[2][20]); glVertex3fv(tp[2][20]);
  945.   glEnd();
  946.   glBegin(GL_TRIANGLE_STRIP);
  947.   glNormal3fv(tn[2][0]); glVertex3fv(tp[2][0]);
  948.   glNormal3fv(tn[3][0]); glVertex3fv(tp[3][0]);
  949.   glNormal3fv(tn[2][1]); glVertex3fv(tp[2][1]);
  950.   glNormal3fv(tn[3][1]); glVertex3fv(tp[3][1]);
  951.   glNormal3fv(tn[2][2]); glVertex3fv(tp[2][2]);
  952.   glNormal3fv(tn[3][2]); glVertex3fv(tp[3][2]);
  953.   glNormal3fv(tn[2][3]); glVertex3fv(tp[2][3]);
  954.   glNormal3fv(tn[3][3]); glVertex3fv(tp[3][3]);
  955.   glNormal3fv(tn[2][4]); glVertex3fv(tp[2][4]);
  956.   glNormal3fv(tn[3][4]); glVertex3fv(tp[3][4]);
  957.   glNormal3fv(tn[2][5]); glVertex3fv(tp[2][5]);
  958.   glNormal3fv(tn[3][5]); glVertex3fv(tp[3][5]);
  959.   glNormal3fv(tn[2][6]); glVertex3fv(tp[2][6]);
  960.   glNormal3fv(tn[3][6]); glVertex3fv(tp[3][6]);
  961.   glNormal3fv(tn[2][7]); glVertex3fv(tp[2][7]);
  962.   glNormal3fv(tn[3][7]); glVertex3fv(tp[3][7]);
  963.   glNormal3fv(tn[2][8]); glVertex3fv(tp[2][8]);
  964.   glNormal3fv(tn[3][8]); glVertex3fv(tp[3][8]);
  965.   glNormal3fv(tn[2][9]); glVertex3fv(tp[2][9]);
  966.   glNormal3fv(tn[3][9]); glVertex3fv(tp[3][9]);
  967.   glNormal3fv(tn[2][10]); glVertex3fv(tp[2][10]);
  968.   glNormal3fv(tn[3][10]); glVertex3fv(tp[3][10]);
  969.   glNormal3fv(tn[2][11]); glVertex3fv(tp[2][11]);
  970.   glNormal3fv(tn[3][11]); glVertex3fv(tp[3][11]);
  971.   glNormal3fv(tn[2][12]); glVertex3fv(tp[2][12]);
  972.   glNormal3fv(tn[3][12]); glVertex3fv(tp[3][12]);
  973.   glNormal3fv(tn[2][13]); glVertex3fv(tp[2][13]);
  974.   glNormal3fv(tn[3][13]); glVertex3fv(tp[3][13]);
  975.   glNormal3fv(tn[2][14]); glVertex3fv(tp[2][14]);
  976.   glNormal3fv(tn[3][14]); glVertex3fv(tp[3][14]);
  977.   glNormal3fv(tn[2][15]); glVertex3fv(tp[2][15]);
  978.   glNormal3fv(tn[3][15]); glVertex3fv(tp[3][15]);
  979.   glNormal3fv(tn[2][16]); glVertex3fv(tp[2][16]);
  980.   glNormal3fv(tn[3][16]); glVertex3fv(tp[3][16]);
  981.   glNormal3fv(tn[2][17]); glVertex3fv(tp[2][17]);
  982.   glNormal3fv(tn[3][17]); glVertex3fv(tp[3][17]);
  983.   glNormal3fv(tn[2][18]); glVertex3fv(tp[2][18]);
  984.   glNormal3fv(tn[3][18]); glVertex3fv(tp[3][18]);
  985.   glNormal3fv(tn[2][19]); glVertex3fv(tp[2][19]);
  986.   glNormal3fv(tn[3][19]); glVertex3fv(tp[3][19]);
  987.   glNormal3fv(tn[2][20]); glVertex3fv(tp[2][20]);
  988.   glNormal3fv(tn[3][20]); glVertex3fv(tp[3][20]);
  989.   glEnd();
  990.   glBegin(GL_TRIANGLE_STRIP);
  991.   glNormal3fv(tn[3][0]); glVertex3fv(tp[3][0]);
  992.   glNormal3fv(tn[4][0]); glVertex3fv(tp[4][0]);
  993.   glNormal3fv(tn[3][1]); glVertex3fv(tp[3][1]);
  994.   glNormal3fv(tn[4][1]); glVertex3fv(tp[4][1]);
  995.   glNormal3fv(tn[3][2]); glVertex3fv(tp[3][2]);
  996.   glNormal3fv(tn[4][2]); glVertex3fv(tp[4][2]);
  997.   glNormal3fv(tn[3][3]); glVertex3fv(tp[3][3]);
  998.   glNormal3fv(tn[4][3]); glVertex3fv(tp[4][3]);
  999.   glNormal3fv(tn[3][4]); glVertex3fv(tp[3][4]);
  1000.   glNormal3fv(tn[4][4]); glVertex3fv(tp[4][4]);
  1001.   glNormal3fv(tn[3][5]); glVertex3fv(tp[3][5]);
  1002.   glNormal3fv(tn[4][5]); glVertex3fv(tp[4][5]);
  1003.   glNormal3fv(tn[3][6]); glVertex3fv(tp[3][6]);
  1004.   glNormal3fv(tn[4][6]); glVertex3fv(tp[4][6]);
  1005.   glNormal3fv(tn[3][7]); glVertex3fv(tp[3][7]);
  1006.   glNormal3fv(tn[4][7]); glVertex3fv(tp[4][7]);
  1007.   glNormal3fv(tn[3][8]); glVertex3fv(tp[3][8]);
  1008.   glNormal3fv(tn[4][8]); glVertex3fv(tp[4][8]);
  1009.   glNormal3fv(tn[3][9]); glVertex3fv(tp[3][9]);
  1010.   glNormal3fv(tn[4][9]); glVertex3fv(tp[4][9]);
  1011.   glNormal3fv(tn[3][10]); glVertex3fv(tp[3][10]);
  1012.   glNormal3fv(tn[4][10]); glVertex3fv(tp[4][10]);
  1013.   glNormal3fv(tn[3][11]); glVertex3fv(tp[3][11]);
  1014.   glNormal3fv(tn[4][11]); glVertex3fv(tp[4][11]);
  1015.   glNormal3fv(tn[3][12]); glVertex3fv(tp[3][12]);
  1016.   glNormal3fv(tn[4][12]); glVertex3fv(tp[4][12]);
  1017.   glNormal3fv(tn[3][13]); glVertex3fv(tp[3][13]);
  1018.   glNormal3fv(tn[4][13]); glVertex3fv(tp[4][13]);
  1019.   glNormal3fv(tn[3][14]); glVertex3fv(tp[3][14]);
  1020.   glNormal3fv(tn[4][14]); glVertex3fv(tp[4][14]);
  1021.   glNormal3fv(tn[3][15]); glVertex3fv(tp[3][15]);
  1022.   glNormal3fv(tn[4][15]); glVertex3fv(tp[4][15]);
  1023.   glNormal3fv(tn[3][16]); glVertex3fv(tp[3][16]);
  1024.   glNormal3fv(tn[4][16]); glVertex3fv(tp[4][16]);
  1025.   glNormal3fv(tn[3][17]); glVertex3fv(tp[3][17]);
  1026.   glNormal3fv(tn[4][17]); glVertex3fv(tp[4][17]);
  1027.   glNormal3fv(tn[3][18]); glVertex3fv(tp[3][18]);
  1028.   glNormal3fv(tn[4][18]); glVertex3fv(tp[4][18]);
  1029.   glNormal3fv(tn[3][19]); glVertex3fv(tp[3][19]);
  1030.   glNormal3fv(tn[4][19]); glVertex3fv(tp[4][19]);
  1031.   glNormal3fv(tn[3][20]); glVertex3fv(tp[3][20]);
  1032.   glNormal3fv(tn[4][20]); glVertex3fv(tp[4][20]);
  1033.   glEnd();
  1034.   glBegin(GL_TRIANGLE_STRIP);
  1035.   glNormal3fv(tn[4][0]); glVertex3fv(tp[4][0]);
  1036.   glNormal3fv(tn[5][0]); glVertex3fv(tp[5][0]);
  1037.   glNormal3fv(tn[4][1]); glVertex3fv(tp[4][1]);
  1038.   glNormal3fv(tn[5][1]); glVertex3fv(tp[5][1]);
  1039.   glNormal3fv(tn[4][2]); glVertex3fv(tp[4][2]);
  1040.   glNormal3fv(tn[5][2]); glVertex3fv(tp[5][2]);
  1041.   glNormal3fv(tn[4][3]); glVertex3fv(tp[4][3]);
  1042.   glNormal3fv(tn[5][3]); glVertex3fv(tp[5][3]);
  1043.   glNormal3fv(tn[4][4]); glVertex3fv(tp[4][4]);
  1044.   glNormal3fv(tn[5][4]); glVertex3fv(tp[5][4]);
  1045.   glNormal3fv(tn[4][5]); glVertex3fv(tp[4][5]);
  1046.   glNormal3fv(tn[5][5]); glVertex3fv(tp[5][5]);
  1047.   glNormal3fv(tn[4][6]); glVertex3fv(tp[4][6]);
  1048.   glNormal3fv(tn[5][6]); glVertex3fv(tp[5][6]);
  1049.   glNormal3fv(tn[4][7]); glVertex3fv(tp[4][7]);
  1050.   glNormal3fv(tn[5][7]); glVertex3fv(tp[5][7]);
  1051.   glNormal3fv(tn[4][8]); glVertex3fv(tp[4][8]);
  1052.   glNormal3fv(tn[5][8]); glVertex3fv(tp[5][8]);
  1053.   glNormal3fv(tn[4][9]); glVertex3fv(tp[4][9]);
  1054.   glNormal3fv(tn[5][9]); glVertex3fv(tp[5][9]);
  1055.   glNormal3fv(tn[4][10]); glVertex3fv(tp[4][10]);
  1056.   glNormal3fv(tn[5][10]); glVertex3fv(tp[5][10]);
  1057.   glNormal3fv(tn[4][11]); glVertex3fv(tp[4][11]);
  1058.   glNormal3fv(tn[5][11]); glVertex3fv(tp[5][11]);
  1059.   glNormal3fv(tn[4][12]); glVertex3fv(tp[4][12]);
  1060.   glNormal3fv(tn[5][12]); glVertex3fv(tp[5][12]);
  1061.   glNormal3fv(tn[4][13]); glVertex3fv(tp[4][13]);
  1062.   glNormal3fv(tn[5][13]); glVertex3fv(tp[5][13]);
  1063.   glNormal3fv(tn[4][14]); glVertex3fv(tp[4][14]);
  1064.   glNormal3fv(tn[5][14]); glVertex3fv(tp[5][14]);
  1065.   glNormal3fv(tn[4][15]); glVertex3fv(tp[4][15]);
  1066.   glNormal3fv(tn[5][15]); glVertex3fv(tp[5][15]);
  1067.   glNormal3fv(tn[4][16]); glVertex3fv(tp[4][16]);
  1068.   glNormal3fv(tn[5][16]); glVertex3fv(tp[5][16]);
  1069.   glNormal3fv(tn[4][17]); glVertex3fv(tp[4][17]);
  1070.   glNormal3fv(tn[5][17]); glVertex3fv(tp[5][17]);
  1071.   glNormal3fv(tn[4][18]); glVertex3fv(tp[4][18]);
  1072.   glNormal3fv(tn[5][18]); glVertex3fv(tp[5][18]);
  1073.   glNormal3fv(tn[4][19]); glVertex3fv(tp[4][19]);
  1074.   glNormal3fv(tn[5][19]); glVertex3fv(tp[5][19]);
  1075.   glNormal3fv(tn[4][20]); glVertex3fv(tp[4][20]);
  1076.   glNormal3fv(tn[5][20]); glVertex3fv(tp[5][20]);
  1077.   glEnd();
  1078.   glBegin(GL_TRIANGLE_STRIP);
  1079.   glNormal3fv(tn[5][0]); glVertex3fv(tp[5][0]);
  1080.   glNormal3fv(tn[6][0]); glVertex3fv(tp[6][0]);
  1081.   glNormal3fv(tn[5][1]); glVertex3fv(tp[5][1]);
  1082.   glNormal3fv(tn[6][1]); glVertex3fv(tp[6][1]);
  1083.   glNormal3fv(tn[5][2]); glVertex3fv(tp[5][2]);
  1084.   glNormal3fv(tn[6][2]); glVertex3fv(tp[6][2]);
  1085.   glNormal3fv(tn[5][3]); glVertex3fv(tp[5][3]);
  1086.   glNormal3fv(tn[6][3]); glVertex3fv(tp[6][3]);
  1087.   glNormal3fv(tn[5][4]); glVertex3fv(tp[5][4]);
  1088.   glNormal3fv(tn[6][4]); glVertex3fv(tp[6][4]);
  1089.   glNormal3fv(tn[5][5]); glVertex3fv(tp[5][5]);
  1090.   glNormal3fv(tn[6][5]); glVertex3fv(tp[6][5]);
  1091.   glNormal3fv(tn[5][6]); glVertex3fv(tp[5][6]);
  1092.   glNormal3fv(tn[6][6]); glVertex3fv(tp[6][6]);
  1093.   glNormal3fv(tn[5][7]); glVertex3fv(tp[5][7]);
  1094.   glNormal3fv(tn[6][7]); glVertex3fv(tp[6][7]);
  1095.   glNormal3fv(tn[5][8]); glVertex3fv(tp[5][8]);
  1096.   glNormal3fv(tn[6][8]); glVertex3fv(tp[6][8]);
  1097.   glNormal3fv(tn[5][9]); glVertex3fv(tp[5][9]);
  1098.   glNormal3fv(tn[6][9]); glVertex3fv(tp[6][9]);
  1099.   glNormal3fv(tn[5][10]); glVertex3fv(tp[5][10]);
  1100.   glNormal3fv(tn[6][10]); glVertex3fv(tp[6][10]);
  1101.   glNormal3fv(tn[5][11]); glVertex3fv(tp[5][11]);
  1102.   glNormal3fv(tn[6][11]); glVertex3fv(tp[6][11]);
  1103.   glNormal3fv(tn[5][12]); glVertex3fv(tp[5][12]);
  1104.   glNormal3fv(tn[6][12]); glVertex3fv(tp[6][12]);
  1105.   glNormal3fv(tn[5][13]); glVertex3fv(tp[5][13]);
  1106.   glNormal3fv(tn[6][13]); glVertex3fv(tp[6][13]);
  1107.   glNormal3fv(tn[5][14]); glVertex3fv(tp[5][14]);
  1108.   glNormal3fv(tn[6][14]); glVertex3fv(tp[6][14]);
  1109.   glNormal3fv(tn[5][15]); glVertex3fv(tp[5][15]);
  1110.   glNormal3fv(tn[6][15]); glVertex3fv(tp[6][15]);
  1111.   glNormal3fv(tn[5][16]); glVertex3fv(tp[5][16]);
  1112.   glNormal3fv(tn[6][16]); glVertex3fv(tp[6][16]);
  1113.   glNormal3fv(tn[5][17]); glVertex3fv(tp[5][17]);
  1114.   glNormal3fv(tn[6][17]); glVertex3fv(tp[6][17]);
  1115.   glNormal3fv(tn[5][18]); glVertex3fv(tp[5][18]);
  1116.   glNormal3fv(tn[6][18]); glVertex3fv(tp[6][18]);
  1117.   glNormal3fv(tn[5][19]); glVertex3fv(tp[5][19]);
  1118.   glNormal3fv(tn[6][19]); glVertex3fv(tp[6][19]);
  1119.   glNormal3fv(tn[5][20]); glVertex3fv(tp[5][20]);
  1120.   glNormal3fv(tn[6][20]); glVertex3fv(tp[6][20]);
  1121.   glEnd();
  1122.   glBegin(GL_TRIANGLE_STRIP);
  1123.   glNormal3fv(tn[6][0]); glVertex3fv(tp[6][0]);
  1124.   glNormal3fv(tn[7][0]); glVertex3fv(tp[7][0]);
  1125.   glNormal3fv(tn[6][1]); glVertex3fv(tp[6][1]);
  1126.   glNormal3fv(tn[7][1]); glVertex3fv(tp[7][1]);
  1127.   glNormal3fv(tn[6][2]); glVertex3fv(tp[6][2]);
  1128.   glNormal3fv(tn[7][2]); glVertex3fv(tp[7][2]);
  1129.   glNormal3fv(tn[6][3]); glVertex3fv(tp[6][3]);
  1130.   glNormal3fv(tn[7][3]); glVertex3fv(tp[7][3]);
  1131.   glNormal3fv(tn[6][4]); glVertex3fv(tp[6][4]);
  1132.   glNormal3fv(tn[7][4]); glVertex3fv(tp[7][4]);
  1133.   glNormal3fv(tn[6][5]); glVertex3fv(tp[6][5]);
  1134.   glNormal3fv(tn[7][5]); glVertex3fv(tp[7][5]);
  1135.   glNormal3fv(tn[6][6]); glVertex3fv(tp[6][6]);
  1136.   glNormal3fv(tn[7][6]); glVertex3fv(tp[7][6]);
  1137.   glNormal3fv(tn[6][7]); glVertex3fv(tp[6][7]);
  1138.   glNormal3fv(tn[7][7]); glVertex3fv(tp[7][7]);
  1139.   glNormal3fv(tn[6][8]); glVertex3fv(tp[6][8]);
  1140.   glNormal3fv(tn[7][8]); glVertex3fv(tp[7][8]);
  1141.   glNormal3fv(tn[6][9]); glVertex3fv(tp[6][9]);
  1142.   glNormal3fv(tn[7][9]); glVertex3fv(tp[7][9]);
  1143.   glNormal3fv(tn[6][10]); glVertex3fv(tp[6][10]);
  1144.   glNormal3fv(tn[7][10]); glVertex3fv(tp[7][10]);
  1145.   glNormal3fv(tn[6][11]); glVertex3fv(tp[6][11]);
  1146.   glNormal3fv(tn[7][11]); glVertex3fv(tp[7][11]);
  1147.   glNormal3fv(tn[6][12]); glVertex3fv(tp[6][12]);
  1148.   glNormal3fv(tn[7][12]); glVertex3fv(tp[7][12]);
  1149.   glNormal3fv(tn[6][13]); glVertex3fv(tp[6][13]);
  1150.   glNormal3fv(tn[7][13]); glVertex3fv(tp[7][13]);
  1151.   glNormal3fv(tn[6][14]); glVertex3fv(tp[6][14]);
  1152.   glNormal3fv(tn[7][14]); glVertex3fv(tp[7][14]);
  1153.   glNormal3fv(tn[6][15]); glVertex3fv(tp[6][15]);
  1154.   glNormal3fv(tn[7][15]); glVertex3fv(tp[7][15]);
  1155.   glNormal3fv(tn[6][16]); glVertex3fv(tp[6][16]);
  1156.   glNormal3fv(tn[7][16]); glVertex3fv(tp[7][16]);
  1157.   glNormal3fv(tn[6][17]); glVertex3fv(tp[6][17]);
  1158.   glNormal3fv(tn[7][17]); glVertex3fv(tp[7][17]);
  1159.   glNormal3fv(tn[6][18]); glVertex3fv(tp[6][18]);
  1160.   glNormal3fv(tn[7][18]); glVertex3fv(tp[7][18]);
  1161.   glNormal3fv(tn[6][19]); glVertex3fv(tp[6][19]);
  1162.   glNormal3fv(tn[7][19]); glVertex3fv(tp[7][19]);
  1163.   glNormal3fv(tn[6][20]); glVertex3fv(tp[6][20]);
  1164.   glNormal3fv(tn[7][20]); glVertex3fv(tp[7][20]);
  1165.   glEnd();
  1166.   glBegin(GL_TRIANGLE_STRIP);
  1167.   glNormal3fv(tn[7][0]); glVertex3fv(tp[7][0]);
  1168.   glNormal3fv(tn[8][0]); glVertex3fv(tp[8][0]);
  1169.   glNormal3fv(tn[7][1]); glVertex3fv(tp[7][1]);
  1170.   glNormal3fv(tn[8][1]); glVertex3fv(tp[8][1]);
  1171.   glNormal3fv(tn[7][2]); glVertex3fv(tp[7][2]);
  1172.   glNormal3fv(tn[8][2]); glVertex3fv(tp[8][2]);
  1173.   glNormal3fv(tn[7][3]); glVertex3fv(tp[7][3]);
  1174.   glNormal3fv(tn[8][3]); glVertex3fv(tp[8][3]);
  1175.   glNormal3fv(tn[7][4]); glVertex3fv(tp[7][4]);
  1176.   glNormal3fv(tn[8][4]); glVertex3fv(tp[8][4]);
  1177.   glNormal3fv(tn[7][5]); glVertex3fv(tp[7][5]);
  1178.   glNormal3fv(tn[8][5]); glVertex3fv(tp[8][5]);
  1179.   glNormal3fv(tn[7][6]); glVertex3fv(tp[7][6]);
  1180.   glNormal3fv(tn[8][6]); glVertex3fv(tp[8][6]);
  1181.   glNormal3fv(tn[7][7]); glVertex3fv(tp[7][7]);
  1182.   glNormal3fv(tn[8][7]); glVertex3fv(tp[8][7]);
  1183.   glNormal3fv(tn[7][8]); glVertex3fv(tp[7][8]);
  1184.   glNormal3fv(tn[8][8]); glVertex3fv(tp[8][8]);
  1185.   glNormal3fv(tn[7][9]); glVertex3fv(tp[7][9]);
  1186.   glNormal3fv(tn[8][9]); glVertex3fv(tp[8][9]);
  1187.   glNormal3fv(tn[7][10]); glVertex3fv(tp[7][10]);
  1188.   glNormal3fv(tn[8][10]); glVertex3fv(tp[8][10]);
  1189.   glNormal3fv(tn[7][11]); glVertex3fv(tp[7][11]);
  1190.   glNormal3fv(tn[8][11]); glVertex3fv(tp[8][11]);
  1191.   glNormal3fv(tn[7][12]); glVertex3fv(tp[7][12]);
  1192.   glNormal3fv(tn[8][12]); glVertex3fv(tp[8][12]);
  1193.   glNormal3fv(tn[7][13]); glVertex3fv(tp[7][13]);
  1194.   glNormal3fv(tn[8][13]); glVertex3fv(tp[8][13]);
  1195.   glNormal3fv(tn[7][14]); glVertex3fv(tp[7][14]);
  1196.   glNormal3fv(tn[8][14]); glVertex3fv(tp[8][14]);
  1197.   glNormal3fv(tn[7][15]); glVertex3fv(tp[7][15]);
  1198.   glNormal3fv(tn[8][15]); glVertex3fv(tp[8][15]);
  1199.   glNormal3fv(tn[7][16]); glVertex3fv(tp[7][16]);
  1200.   glNormal3fv(tn[8][16]); glVertex3fv(tp[8][16]);
  1201.   glNormal3fv(tn[7][17]); glVertex3fv(tp[7][17]);
  1202.   glNormal3fv(tn[8][17]); glVertex3fv(tp[8][17]);
  1203.   glNormal3fv(tn[7][18]); glVertex3fv(tp[7][18]);
  1204.   glNormal3fv(tn[8][18]); glVertex3fv(tp[8][18]);
  1205.   glNormal3fv(tn[7][19]); glVertex3fv(tp[7][19]);
  1206.   glNormal3fv(tn[8][19]); glVertex3fv(tp[8][19]);
  1207.   glNormal3fv(tn[7][20]); glVertex3fv(tp[7][20]);
  1208.   glNormal3fv(tn[8][20]); glVertex3fv(tp[8][20]);
  1209.   glEnd();
  1210.   glBegin(GL_TRIANGLE_STRIP);
  1211.   glNormal3fv(tn[8][0]); glVertex3fv(tp[8][0]);
  1212.   glNormal3fv(tn[9][0]); glVertex3fv(tp[9][0]);
  1213.   glNormal3fv(tn[8][1]); glVertex3fv(tp[8][1]);
  1214.   glNormal3fv(tn[9][1]); glVertex3fv(tp[9][1]);
  1215.   glNormal3fv(tn[8][2]); glVertex3fv(tp[8][2]);
  1216.   glNormal3fv(tn[9][2]); glVertex3fv(tp[9][2]);
  1217.   glNormal3fv(tn[8][3]); glVertex3fv(tp[8][3]);
  1218.   glNormal3fv(tn[9][3]); glVertex3fv(tp[9][3]);
  1219.   glNormal3fv(tn[8][4]); glVertex3fv(tp[8][4]);
  1220.   glNormal3fv(tn[9][4]); glVertex3fv(tp[9][4]);
  1221.   glNormal3fv(tn[8][5]); glVertex3fv(tp[8][5]);
  1222.   glNormal3fv(tn[9][5]); glVertex3fv(tp[9][5]);
  1223.   glNormal3fv(tn[8][6]); glVertex3fv(tp[8][6]);
  1224.   glNormal3fv(tn[9][6]); glVertex3fv(tp[9][6]);
  1225.   glNormal3fv(tn[8][7]); glVertex3fv(tp[8][7]);
  1226.   glNormal3fv(tn[9][7]); glVertex3fv(tp[9][7]);
  1227.   glNormal3fv(tn[8][8]); glVertex3fv(tp[8][8]);
  1228.   glNormal3fv(tn[9][8]); glVertex3fv(tp[9][8]);
  1229.   glNormal3fv(tn[8][9]); glVertex3fv(tp[8][9]);
  1230.   glNormal3fv(tn[9][9]); glVertex3fv(tp[9][9]);
  1231.   glNormal3fv(tn[8][10]); glVertex3fv(tp[8][10]);
  1232.   glNormal3fv(tn[9][10]); glVertex3fv(tp[9][10]);
  1233.   glNormal3fv(tn[8][11]); glVertex3fv(tp[8][11]);
  1234.   glNormal3fv(tn[9][11]); glVertex3fv(tp[9][11]);
  1235.   glNormal3fv(tn[8][12]); glVertex3fv(tp[8][12]);
  1236.   glNormal3fv(tn[9][12]); glVertex3fv(tp[9][12]);
  1237.   glNormal3fv(tn[8][13]); glVertex3fv(tp[8][13]);
  1238.   glNormal3fv(tn[9][13]); glVertex3fv(tp[9][13]);
  1239.   glNormal3fv(tn[8][14]); glVertex3fv(tp[8][14]);
  1240.   glNormal3fv(tn[9][14]); glVertex3fv(tp[9][14]);
  1241.   glNormal3fv(tn[8][15]); glVertex3fv(tp[8][15]);
  1242.   glNormal3fv(tn[9][15]); glVertex3fv(tp[9][15]);
  1243.   glNormal3fv(tn[8][16]); glVertex3fv(tp[8][16]);
  1244.   glNormal3fv(tn[9][16]); glVertex3fv(tp[9][16]);
  1245.   glNormal3fv(tn[8][17]); glVertex3fv(tp[8][17]);
  1246.   glNormal3fv(tn[9][17]); glVertex3fv(tp[9][17]);
  1247.   glNormal3fv(tn[8][18]); glVertex3fv(tp[8][18]);
  1248.   glNormal3fv(tn[9][18]); glVertex3fv(tp[9][18]);
  1249.   glNormal3fv(tn[8][19]); glVertex3fv(tp[8][19]);
  1250.   glNormal3fv(tn[9][19]); glVertex3fv(tp[9][19]);
  1251.   glNormal3fv(tn[8][20]); glVertex3fv(tp[8][20]);
  1252.   glNormal3fv(tn[9][20]); glVertex3fv(tp[9][20]);
  1253.   glEnd();
  1254.   glBegin(GL_TRIANGLE_STRIP);
  1255.   glNormal3fv(tn[9][0]); glVertex3fv(tp[9][0]);
  1256.   glNormal3fv(tn[10][0]); glVertex3fv(tp[10][0]);
  1257.   glNormal3fv(tn[9][1]); glVertex3fv(tp[9][1]);
  1258.   glNormal3fv(tn[10][1]); glVertex3fv(tp[10][1]);
  1259.   glNormal3fv(tn[9][2]); glVertex3fv(tp[9][2]);
  1260.   glNormal3fv(tn[10][2]); glVertex3fv(tp[10][2]);
  1261.   glNormal3fv(tn[9][3]); glVertex3fv(tp[9][3]);
  1262.   glNormal3fv(tn[10][3]); glVertex3fv(tp[10][3]);
  1263.   glNormal3fv(tn[9][4]); glVertex3fv(tp[9][4]);
  1264.   glNormal3fv(tn[10][4]); glVertex3fv(tp[10][4]);
  1265.   glNormal3fv(tn[9][5]); glVertex3fv(tp[9][5]);
  1266.   glNormal3fv(tn[10][5]); glVertex3fv(tp[10][5]);
  1267.   glNormal3fv(tn[9][6]); glVertex3fv(tp[9][6]);
  1268.   glNormal3fv(tn[10][6]); glVertex3fv(tp[10][6]);
  1269.   glNormal3fv(tn[9][7]); glVertex3fv(tp[9][7]);
  1270.   glNormal3fv(tn[10][7]); glVertex3fv(tp[10][7]);
  1271.   glNormal3fv(tn[9][8]); glVertex3fv(tp[9][8]);
  1272.   glNormal3fv(tn[10][8]); glVertex3fv(tp[10][8]);
  1273.   glNormal3fv(tn[9][9]); glVertex3fv(tp[9][9]);
  1274.   glNormal3fv(tn[10][9]); glVertex3fv(tp[10][9]);
  1275.   glNormal3fv(tn[9][10]); glVertex3fv(tp[9][10]);
  1276.   glNormal3fv(tn[10][10]); glVertex3fv(tp[10][10]);
  1277.   glNormal3fv(tn[9][11]); glVertex3fv(tp[9][11]);
  1278.   glNormal3fv(tn[10][11]); glVertex3fv(tp[10][11]);
  1279.   glNormal3fv(tn[9][12]); glVertex3fv(tp[9][12]);
  1280.   glNormal3fv(tn[10][12]); glVertex3fv(tp[10][12]);
  1281.   glNormal3fv(tn[9][13]); glVertex3fv(tp[9][13]);
  1282.   glNormal3fv(tn[10][13]); glVertex3fv(tp[10][13]);
  1283.   glNormal3fv(tn[9][14]); glVertex3fv(tp[9][14]);
  1284.   glNormal3fv(tn[10][14]); glVertex3fv(tp[10][14]);
  1285.   glNormal3fv(tn[9][15]); glVertex3fv(tp[9][15]);
  1286.   glNormal3fv(tn[10][15]); glVertex3fv(tp[10][15]);
  1287.   glNormal3fv(tn[9][16]); glVertex3fv(tp[9][16]);
  1288.   glNormal3fv(tn[10][16]); glVertex3fv(tp[10][16]);
  1289.   glNormal3fv(tn[9][17]); glVertex3fv(tp[9][17]);
  1290.   glNormal3fv(tn[10][17]); glVertex3fv(tp[10][17]);
  1291.   glNormal3fv(tn[9][18]); glVertex3fv(tp[9][18]);
  1292.   glNormal3fv(tn[10][18]); glVertex3fv(tp[10][18]);
  1293.   glNormal3fv(tn[9][19]); glVertex3fv(tp[9][19]);
  1294.   glNormal3fv(tn[10][19]); glVertex3fv(tp[10][19]);
  1295.   glNormal3fv(tn[9][20]); glVertex3fv(tp[9][20]);
  1296.   glNormal3fv(tn[10][20]); glVertex3fv(tp[10][20]);
  1297.   glEnd();
  1298.   glBegin(GL_TRIANGLE_STRIP);
  1299.   glNormal3fv(tn[10][0]); glVertex3fv(tp[10][0]);
  1300.   glNormal3fv(tn[11][0]); glVertex3fv(tp[11][0]);
  1301.   glNormal3fv(tn[10][1]); glVertex3fv(tp[10][1]);
  1302.   glNormal3fv(tn[11][1]); glVertex3fv(tp[11][1]);
  1303.   glNormal3fv(tn[10][2]); glVertex3fv(tp[10][2]);
  1304.   glNormal3fv(tn[11][2]); glVertex3fv(tp[11][2]);
  1305.   glNormal3fv(tn[10][3]); glVertex3fv(tp[10][3]);
  1306.   glNormal3fv(tn[11][3]); glVertex3fv(tp[11][3]);
  1307.   glNormal3fv(tn[10][4]); glVertex3fv(tp[10][4]);
  1308.   glNormal3fv(tn[11][4]); glVertex3fv(tp[11][4]);
  1309.   glNormal3fv(tn[10][5]); glVertex3fv(tp[10][5]);
  1310.   glNormal3fv(tn[11][5]); glVertex3fv(tp[11][5]);
  1311.   glNormal3fv(tn[10][6]); glVertex3fv(tp[10][6]);
  1312.   glNormal3fv(tn[11][6]); glVertex3fv(tp[11][6]);
  1313.   glNormal3fv(tn[10][7]); glVertex3fv(tp[10][7]);
  1314.   glNormal3fv(tn[11][7]); glVertex3fv(tp[11][7]);
  1315.   glNormal3fv(tn[10][8]); glVertex3fv(tp[10][8]);
  1316.   glNormal3fv(tn[11][8]); glVertex3fv(tp[11][8]);
  1317.   glNormal3fv(tn[10][9]); glVertex3fv(tp[10][9]);
  1318.   glNormal3fv(tn[11][9]); glVertex3fv(tp[11][9]);
  1319.   glNormal3fv(tn[10][10]); glVertex3fv(tp[10][10]);
  1320.   glNormal3fv(tn[11][10]); glVertex3fv(tp[11][10]);
  1321.   glNormal3fv(tn[10][11]); glVertex3fv(tp[10][11]);
  1322.   glNormal3fv(tn[11][11]); glVertex3fv(tp[11][11]);
  1323.   glNormal3fv(tn[10][12]); glVertex3fv(tp[10][12]);
  1324.   glNormal3fv(tn[11][12]); glVertex3fv(tp[11][12]);
  1325.   glNormal3fv(tn[10][13]); glVertex3fv(tp[10][13]);
  1326.   glNormal3fv(tn[11][13]); glVertex3fv(tp[11][13]);
  1327.   glNormal3fv(tn[10][14]); glVertex3fv(tp[10][14]);
  1328.   glNormal3fv(tn[11][14]); glVertex3fv(tp[11][14]);
  1329.   glNormal3fv(tn[10][15]); glVertex3fv(tp[10][15]);
  1330.   glNormal3fv(tn[11][15]); glVertex3fv(tp[11][15]);
  1331.   glNormal3fv(tn[10][16]); glVertex3fv(tp[10][16]);
  1332.   glNormal3fv(tn[11][16]); glVertex3fv(tp[11][16]);
  1333.   glNormal3fv(tn[10][17]); glVertex3fv(tp[10][17]);
  1334.   glNormal3fv(tn[11][17]); glVertex3fv(tp[11][17]);
  1335.   glNormal3fv(tn[10][18]); glVertex3fv(tp[10][18]);
  1336.   glNormal3fv(tn[11][18]); glVertex3fv(tp[11][18]);
  1337.   glNormal3fv(tn[10][19]); glVertex3fv(tp[10][19]);
  1338.   glNormal3fv(tn[11][19]); glVertex3fv(tp[11][19]);
  1339.   glNormal3fv(tn[10][20]); glVertex3fv(tp[10][20]);
  1340.   glNormal3fv(tn[11][20]); glVertex3fv(tp[11][20]);
  1341.   glEnd();
  1342. }
  1343.  
  1344. void draw_holder(void) {
  1345.   
  1346.   if( MAT_HOLDER_RINGS) {
  1347.     glCallList( MAT_HOLDER_RINGS); 
  1348.   }
  1349.   
  1350.   glPushMatrix();
  1351.   draw_base();
  1352.   glTranslatef(0.0,  0.0,  20.000000);
  1353.   draw_torus();
  1354.   glTranslatef(0.0,  0.0,  5.000000);
  1355.   draw_torus();
  1356.   glTranslatef(0.0,  0.0,  5.000000);
  1357.   draw_torus();
  1358.   glPopMatrix();
  1359. }
  1360.  
  1361.